Date: Wed, 20 Nov 1996 22:39:12 GMT
Server: NCSA/1.5.1
Last-modified: Thu, 04 Apr 1996 15:20:12 GMT
Content-type: text/html
Content-length: 8400

<HEAD>
<TITLE>CIS 625          Parallel Programming            Spring 1996</TITLE>
</HEAD>
<BODY><P>
<H1>CIS 625           Parallel Programming             Spring 1996</H1>
<P>
<HR>
<i><b>What's New on these Web Pages</b></i>
<ul>
<li> I've added the description of the
generic formal package parameter workaround to the Ada-95 web
page.  The sources are also in my ftp directory.
<li> I've added the ada source to my ftp directory
"/common/ftp/pub/CIS/Dwyer/cis625/ada".  There is a loose
organization, in particular the replicated worker stuff is in
replicated.
<li> I've added a page related to the mid-term and final exams.
It lists problems that you should be able to work.
<li> I've added a page about the Ada-95 compiler see below.
</ul>
<HR>


<P>
<hr>
<b>OVERVIEW</b>
<p>
Fundamental advances in computing performance are dependent on
adapting programming techniques to new parallel computer architectures.
Whether it is to meet real-time
constraints, to improve response times for computationally intensive tasks,
or to model physically-parallel systems,
parallel programming techniques should be useful
to students and professionals in a wide variety of
disciplines; advanced undergraduates in CIS,  graduate students in
computing systems,  engineers building embedded systems, and scientists doing
theoretical calculations could benefit from this course. 
The goal of this course is to build on the
knowledge of data structures and algorithms from CIS 500
to expose the student to fundamental concepts in concurrent and
distributed programming.
<p>
<hr>
<b>LECTURES</b>
<p>
Nichols 127<BR>MWF 1:30-2:20 pm
<p>
<hr>
<b>INSTRUCTORS</b>
<p>
Matthew Dwyer and Virgil Wallentine<BR>
<P>
Office:       Nichols 324E<br>
Email:        dwyer@cis.ksu.edu<br>
WWW:          http://www.cis.ksu.edu/~dwyer<br>
Phone:        (913) 532-6350<br>
Fax:          (913) 532-7353<br>
Office Hours: TR 10:00-11:00 am<br>
<p>
<hr>
<b>PREREQUISITES</b>
<p>
CIS 500
<p>
<hr>
<b>REQUIREMENTS</b>
<P>
The course will consist of lectures, readings, programming projects ,
and exams.
<P>
<DL ><DT><b>
<!WA0><a href= "http://www.cis.ksu.edu/~dwyer/courses/625/lectures/lectures.html">
Lectures </a> & Readings</b>
<DD>
The bulk of the concepts in the course will
be presented, explained and illustrated by way of extended
examples in the lectures.  The readings serve to provide more
details and depth on selected concepts.
<P>
Lectures and readings function
as an integrated presentation of the course material.  
It is expected that you will have completed each reading <b>prior</b> to the
appropriate lecture.  Take advantage of class time to ask
questions and elaborate on issues that were presented in the
readings.

<P>
<DT><b>Homeworks</b>
<DD>There will be 4 programming 
<!WA1><a href= "http://www.cis.ksu.edu/~dwyer/courses/625/projects/projects.html">
projects</a>.
You will be working with three different languages:
Multi-Pascal, Concurrent C++ and 
<!WA2><a href= "http://www.cis.ksu.edu/~dwyer/courses/625/ada/ada.html">
Ada-95</a>.
The programming
projects are designed to provide in-depth exposure to 
the concepts covered in the course.  The use of different
languages will help to illustrate the variety of different 
solution strategies that are possible.
<P>
There are no group projects in this class so 
all students are expected to do their own work. You may discuss the
projects with other students, but you may not share designs, code, data,
modules, objects, documentation, specification, requirements, or
interfaces. Please refer to the KSU
Campus Phone book which contains the Student Life Handbook.
You are governed by these guidelines and procedures, take
note of the following passage  &quot;An
instructor who is convinced that he or she has evidence of plagiarism or
cheating should first decide on the appropriate punishment. The instructor
may impose punishment ranging from no credit for the work or exam to an F in
the class. The instructor may recommend dismissal or suspension, but that
recommendation can only be carried out by the Undergraduate Grievance
Board. At a minimum, no credit will be given for the work or exam in which
dishonesty occurred. The instructor may draft a memo for the student's
record, to be kept in the provost's office until graduation, indicating the
nature of the dishonest act.&quot;

<P>
<DT><b>
<!WA3><a href= "http://www.cis.ksu.edu/~dwyer/courses/625/exams/exams.html">
Examinations</a>
</b>
<DD>There will be a 1-hour in-class mid-term exam
and a 2-hour in-class comprehensive final exam.
<P>
 </DL>
<P>
Final grades will be assigned based on the following weighting:
homeworks (50%), mid-term (15%), and final (35%).  

<p>
<hr>
<b>READINGS</b>
<P>
The required readings for this course include a text book
and selected papers from the literature.  These papers are
available in the holdings of the university library.
<UL>
<li>Lester. <em>The Art of Parallel Programming</em>. Prentice-Hall. 1993
<li>Gehani and Roome. <em>Concurrent C</em>. Software Practice and Experience. Vol.  16, No. 9, (Sept.), 1986
<li>Gehani and Roome. <em>Concurrent C++: Concurrent Programming with Class(es)</em>.  Vol. 18, No. 12, (Dec.) 1988
<li>Gehani. <em>Capsules: A Shared Memory Access for Concurrent C/C++</em>. IEEE
Trans. on Parallel and Distr. Systems, Vol. 4, No. 7, July, 1993
<li>Peterson. <em>Petri Nets</em>. Computing Surveys, Vol. 9, No. 3, 1977
</UL>
<P>
Additional reference materials include:
<UL>
<li>Burns and Weller.  <em>Concurrency in Ada</em>. Cambridge University Press, 1995
<li>Braunl.  <em>Parallel Programming: An Introduction</em>. Prentice-Hall, 1993
<li>Krishnamurthy. <em>Parallel Processing</em>. Addison-Wesley, 1989
<li><em>Lovelace</em>. WWW-based Ada 95 Tutorial. 
<!WA4><a href=
"http://lglwww.epfl.ch/Ada/Tutorials/Lovelace/lovelace.html">
&quot;http://lglwww.epfl.ch/Ada/Tutorials/Lovelace/lovelace.html&quot;</a>
</UL>

<p>
<hr>
<b>ADDITIONAL RESOURCES</b>
<P>Web pages for course (linked off of
my home page) will 
include assignments, solutions, lecture notes, and links
to other parallel programming pages.

<p>
<hr>
<b>ORGANIZATION & SCHEDULE</b>
<p>
The course is broken up into two phases.  In the first phase
we will be covering material in the Lester text.  This
will provide you with a solid background on the fundamentals
of parallel programming.  In the second phase we will cover
a number of additional topics related to parallel programming
that will build off this foundation.  Professor Wallentine
will lecture during the first phase of the course and
Professor Dwyer will lecture during the second phase.  Professor
Dwyer will hold the office hours for the course.
<P>
The course will cover the following topics:
<DL ><DT><b>Motivation for Parallel Programming</b>
<DD>
Why parallelism?
When should we use it?

<DT><b>Disjoint Parallel Processes</b>
<DD>How do we break a problem
up into sub-problems that can be solved independetly?  Basic
concepts.
<DT><b>Shared Memory Systems</b>
<DD>
Multiprocessor architectures, process communication and
synchronization.
<DT><b>Synchronous Parallelism</b>
<DD>
<DT><b>Distributed Memory Systems</b>
<DD>Communication and system
topologies.
<DT><b>Asynchronous Parallelism</b>
<DD>
<DT><b>System Performance</b>
<DD>Amdahl's Law, Gustafson-Barsis Law,
measures (speedup, utilization, throughput).
<DT><b>Parallel Programming Languages</b>
<DD>Survey and
use of language support for writing parallel programs
in Concurrent-C++ and 
<!WA5><a href= "http://www.cis.ksu.edu/~dwyer/courses/625/ada/ada.html">
Ada-95 </a>.
<DT><b>Concurrent Programming Paradigms</b>
<DD>
Common solution techniques and software architectures
of parallel and concurrent programs: client/server,
filters, token passing etc.
<DT><b>Formal Models of Concurrent Systems</b>
<DD>Petri nets,
state-space methods, path expressions.  Properties of
concurrent and parallel systems.
<DT><b>Distributed Systems</b>
<DD>Replication, load balancing,
deadlock, multi-cast communication.
<DT><b>Data-driven Parallelism</b>
<DD>Data parallel programming,
vector processing, automatic detection and exploitation of parallelism.
<DT><b>Engineering Concurrent Software</b>
<DD>Testing, Validating,
Verifying concurrent systems.  Reusable concurrent components.
<P>
 </DL>
<P>
Schedule of topics, readings and assignments:
<P><!WA6><IMG ALIGN=BOTTOM ALT="" SRC="http://www.cis.ksu.edu/~dwyer/courses/625/syllabus/_15294_tabular49.gif"><P>
<P>
<HR>

</BODY>
<P><ADDRESS>
dwyer@cis.ksu.edu
</ADDRESS>
